C语言网络编程:socket函数 您所在的位置:网站首页 asp socket函数 C语言网络编程:socket函数

C语言网络编程:socket函数

2023-09-13 03:37| 来源: 网络整理| 查看: 265

头文件

函数使用int socket(int domain, int type, int protocol);

函数功能:创建一个通信的终点,并返回一个文件描述符来代表通信的终点

函数参数: a. domain 代编当前创建的socket文件描述符使用的是哪一个协议族进行通信,这些协议族都包含在sys/socket.h,其中主要的协议族如下:

AF_UNIX, AF_LOCAL 本地进程通信AF_INET IPV4网络传输层协议AF_INET6 IPV6网络传输层协议AF_IP IPX-Novell协议AF_NETLINK 内核用户接口设备 当前正式得协议族描述已经变为PF_INET。。。 TCP/IP协议族如下 在这里插入图片描述

b. type函数socket()的参数type用于设置套接字通信的类型,指定使用TCP/IP协议族中的哪个子协议进行通信,主要有SOCKET_STREAM(流式套接字)、SOCK——DGRAM(数据包套接字)

SOCK_STREAM 提供有序的、可靠的、双链接的、字节流数据传输;主要是用作TCP链接时的数据传输,此时如果想要使用TCP协议,则将domain设置为AF_INET即可SOCK_DGRAM 支持无链接、不可靠的数据传输,数据传输时定长;主要时用作UDP链接时的传输SOCK_SEQPACKET 提供有序的,可靠的,双链接的数据传输通道,数据长度定长,使用的时候需要将数据全部读出SOCK_RAW RAW类型,提供原始网络协议访问;即此时我们使用的通信协议为IP 协议SOCK_RDM 提供可靠的数据报文,不过可能数据会有乱序SOCK_PACKET 当前通信类型已经过时,不应在通信程序中使用SOCK_NOBLOCK 将socket返回的文件描述符指定为非阻塞的,类似SOCK_STREAM | SOCK_NOBLOCK 表示使用面向链接的数据传输同时非阻塞SOCK_CLOEXEC 表示一旦进程执行exec系统调用之后,将会自动关闭socket返回的套接字文件描述符

c. protocol 特例化来一个协议,用来指定协议号 一般情况下protocol写0,表示使用domain和type指定的协议,不过如果domain和type所指定的协议有好几个时,此时就需要通过具体的协议号来区分,否则写0即可。 所有的协议编号都被保存在了/etc/procotols下,tcp协议编号为6,udp协议编号为17

ip 0 IP # internet protocol, pseudo protocol number hopopt 0 HOPOPT # IPv6 Hop-by-Hop Option [RFC1883] icmp 1 ICMP # internet control message protocol igmp 2 IGMP # Internet Group Management ggp 3 GGP # gateway-gateway protocol ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'') ...

类似如下 socket (AF_INET, SOCK_STREAM,6);和socket (AF_INET, SOCK_STREAM,0);都代表tcp协议



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有